/*
* jQuery CascadingSelect AddOption
*
* Author: luq885
* http://blog.csdn.net/luq885 (chinese)
*
* Licensed like jQuery, see http://docs.jquery.com/License
*
* blog: http://blog.csdn.net/luq885
*/

/**
 * 下拉列表框联动插件CascadingSelect，这个插件是基于上面FillOptions插件制作的，
 可以实现两个下拉列表框的联动，定义如下：
 CascadingSelect(target,url,options,endfn)
 参数说明：
 * @param target 需要联动的下拉列表框，必须
 * @param url ajax请求的地址，必须
 * @param options 与FillOptions的类似，增加了一个参数parameter：ajax请求时传回值的参数名，必须
 * @param endfn 类型是function，完成联动后执行
 * @constructor
 */
jQuery.fn.CascadingSelect = function(target,url,options,endfn){
    $.ajaxSetup({async:false});
	if(target[0].tagName != "SELECT") throw "target must be SELECT";
    if(url.length == 0) throw "request is required";
    if(options.parameter == undefined) throw "parameter is required";
    this.change(function(){
        $(target).empty();
        var newurl = "";
		urlstr = url.split("?");
        newurl = urlstr[0] + "?" + options.parameter + "=" + $(this).val();
        if(urlstr[1]){
            newurl += "&" +urlstr[1];
        }
        if(typeof endfn =="function"){
            options.callback=function(datas){
                endfn(datas);
            }
        }
        target.FillOptions(newurl,options);
    });
};

/**
 * 添加一个列表项的插件AddOption，用来向下拉列表框中添加一个列表项。
 定义如下：
 AddOption (text,value,selected,index)
 参数说明：
 * @param text 文本型，列表项文本
 * @param value 文本型，列表项值
 * @param selected 布尔型，是否选择加入的列表项
 * @param index 数值型，加入位置
 * @constructor
 */
jQuery.fn.AddOption = function(text,value,selected,index){
    option = new Option(text,value);
	this[0].options.add(option,index);
	this[0].options[index].selected = selected;
};

